/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package xml_pac;

import bean.Personne;
import com.mysql.jdbc.log.Log4JLogger;
import java.util.LinkedList;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/**
 *
 * @author romain_lou
 */
public class PersonneHandler extends DefaultHandler{
	//résultats de notre parsing
	private List<Personne> annuaire;
	private Personne personne;
	private boolean inAdrPerm, inAdrExploit;
	//buffer nous permettant de récupérer les données
	private StringBuffer buffer;

	// simple constructeur
	public PersonneHandler(){
		super();
	}

	//détection d'ouverture de balise
	public void startElement(String uri, String localName,
			String qName, Attributes attributes) throws SAXException{
		
                if(qName.equals("producteur")){

                    personne = new Personne();
                    personne.setNumPacage(attributes.getValue("numero-pacage"));

                }else if(qName.equals("iban")){

                    personne.setRibIBAN(attributes.getValue("compte-iban"));
                    personne.setRibBic(attributes.getValue("bic"));
                    personne.setRibTitulaire(attributes.getValue("titulaire"));

                }else if(qName.equals("adresse-permanente")){

                    inAdrPerm = true;

                }else if(qName.equals("adresse-exploitation")){

                    inAdrExploit = true;

                }
                else {

			buffer = new StringBuffer();

		}
	}
	//détection fin de balise
	public void endElement(String uri, String localName, String qName)
			throws SAXException{
		if(qName.equals("personne")){

			annuaire.add(personne);
			personne = null;

		}else if(qName.equals("nom")){

			personne.setNom(buffer.toString());
			buffer = null;

		}else if(qName.equals("prenoms")){

			personne.setPrenom(buffer.toString());
			buffer = null;

		}else if(qName.equals("civilite")){

			personne.setCivilite(buffer.toString());
			buffer = null;

		}else if(qName.equals("numero-pacage")){

                        personne.setCivilite(buffer.toString());
			buffer = null;

		}else if(qName.equals("siret")){

                        personne.setSiret(buffer.toString());
			buffer = null;

		}else if(qName.equals("telephone")){

                        personne.setTelephone(buffer.toString());
			buffer = null;

		}else if(qName.equals("ligne2") && inAdrPerm){

                        personne.setAdrPers_rue(buffer.toString());
			buffer = null;

		}else if(qName.equals("code-postal") && inAdrPerm){

                        personne.setAdrPers_cp(buffer.toString());
			buffer = null;

		}else if(qName.equals("commune") && inAdrPerm){

                        personne.setAdrPers_commune(buffer.toString());
			buffer = null;
                        inAdrPerm = false;

		}else if(qName.equals("code-postal") && inAdrExploit){

                        personne.setAdrExploit_cp(buffer.toString());
			buffer = null;

		}else if(qName.equals("commune") && inAdrExploit){

                        personne.setAdrExploit_commune(buffer.toString());
                        inAdrExploit = false;
			buffer = null;

		}
                annuaire = new LinkedList<Personne>();
                annuaire.add(personne);
	}

	//détection de caractères
	public void characters(char[] ch,int start, int length)
			throws SAXException{
		String lecture = new String(ch,start,length);
		if(buffer != null) buffer.append(lecture);
	}

	//début du parsing
	public void startDocument() throws SAXException {
                utilitaire.Log.getLog().ecrireSansTerminal("Debut du parsing XML");
	}
	//fin du parsing
	public void endDocument() throws SAXException {

                //Enregistrement dans la BDD
		personne.save();
	}

    public Personne getPersonne() {
        return personne;
    }

        
}
